Computer programs are written in one or more programming languages and generally have their own syntax. Computer programming languages also have their own set of axiomatic semantic concepts, features and functionality. The axiomatic semantic concepts define a language in terms of discrete entities that are implemented by that language. For example, a language may implement entities such as objects, subroutines, functions, data structures, control structures, decision structures, statements and expressions. Differences in syntax, semantics and functionality introduce complexity into computer programming, however, since programmers must decide which languages to work with, and must learn the syntax, semantic concepts, features and functionality of various languages. Unfortunately, valuable time, energy and resources are expended interacting with various languages.
Computer programming has become more tool-based. Thus, tools like wizards, modeling tools, code analyzers and code generators, for example, have become more common. But creating such tools is hampered by the necessity of the tool maker having to create a parser for each language with which the tool interacts.
Differences in accessing object attributes and invoking object methods may also add complexity to computer programming. For example, some languages pass parameters by reference while others pass parameters by value and yet others may use a combination. Thus, interacting with different languages may require adherence to different parameter passing protocols. Consequently, there is a need for an interface model to simplify programming and interactions with various languages.